// Name:            Lightbox
// Description:     Component to create an lightbox image gallery
//
// Component:       `uk-lightbox`
//
// Sub-objects:     `uk-lightbox-page`
//                  `uk-lightbox-items`
//                  `uk-lightbox-toolbar`
//                  `uk-lightbox-toolbar-icon`
//                  `uk-lightbox-button`
//                  `uk-lightbox-caption`
//                  `uk-lightbox-iframe`
//
// States:          `uk-open`
//
// ========================================================================


// Variables
// ========================================================================

$lightbox-z-index:                               $global-z-index + 10 !default;
$lightbox-background:                            #000 !default;

$lightbox-item-color:                            rgba(255,255,255,0.7) !default;

$lightbox-toolbar-padding-vertical:              10px !default;
$lightbox-toolbar-padding-horizontal:            10px !default;
$lightbox-toolbar-background:                    rgba(0,0,0,0.3) !default;
$lightbox-toolbar-color:                         rgba(255,255,255,0.7) !default;

$lightbox-toolbar-icon-padding:                  5px !default;
$lightbox-toolbar-icon-color:                    rgba(255,255,255,0.7) !default;

$lightbox-toolbar-icon-hover-color:              #fff !default;

$lightbox-button-size:                           50px !default;
$lightbox-button-background:                     $lightbox-toolbar-background !default;
$lightbox-button-color:                          rgba(255,255,255,0.7) !default;

$lightbox-button-hover-color:                    #fff !default;


/* ========================================================================
   Component: Lightbox
 ========================================================================== */

/*
 * 1. Hide by default
 * 2. Set position
 * 3. Allow scrolling for the modal dialog
 * 4. Horizontal padding
 * 5. Mask the background page
 * 6. Fade-in transition
 */

.uk-lightbox {
    /* 1 */
    display: none;
    /* 2 */
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: $lightbox-z-index;
    /* 5 */
    background: $lightbox-background;
    /* 6 */
    opacity: 0;
    transition: opacity 0.15s linear;
    @if(mixin-exists(hook-lightbox)) {@include hook-lightbox();}
}

/*
 * Open
 * 1. Center child
 * 2. Fade-in
 */

.uk-lightbox.uk-open {
    display: block;
    /* 2 */
    opacity: 1;
}


/* Page
 ========================================================================== */

/*
 * Prevent scrollbars
 */

.uk-lightbox-page { overflow: hidden; }


/* Item
 ========================================================================== */

/*
 * 1. Center child within the viewport
 * 2. Not visible by default
 * 3. Color needed for spinner icon
 * 4. Optimize animation
 * 5. Responsiveness
 *    Using `vh` for `max-height` to fix image proportions after resize in Safari and Opera
 *    Using `vh` and `vw` to make responsive image work in IE11
 */

.uk-lightbox-items > * {
    /* 1 */
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    /* 2 */
    display: none;
    justify-content: center;
    align-items: center;
    /* 3 */
    color: $lightbox-item-color;
    /* 4 */
    will-change: transform, opacity;
    @if(mixin-exists(hook-lightbox-item)) {@include hook-lightbox-item();}
}

/* 5 */
.uk-lightbox-items > * > * {
    max-width: 100vw;
    max-height: 100vh;
}

.uk-lightbox-items > * > :not(iframe) {
    width: auto;
    height: auto;
}

.uk-lightbox-items > .uk-active { display: flex; }

/* Toolbar
 ========================================================================== */

.uk-lightbox-toolbar {
    padding: $lightbox-toolbar-padding-vertical $lightbox-toolbar-padding-horizontal;
    background: $lightbox-toolbar-background;
    color: $lightbox-toolbar-color;
    @if(mixin-exists(hook-lightbox-toolbar)) {@include hook-lightbox-toolbar();}
}

.uk-lightbox-toolbar * { color: $lightbox-toolbar-color; }


/* Toolbar Icon (Close)
 ========================================================================== */

.uk-lightbox-toolbar-icon {
    padding: $lightbox-toolbar-icon-padding;
    color: $lightbox-toolbar-icon-color;
    @if(mixin-exists(hook-lightbox-toolbar-icon)) {@include hook-lightbox-toolbar-icon();}
}

/*
 * Hover
 */

.uk-lightbox-toolbar-icon:hover {
    color: $lightbox-toolbar-icon-hover-color;
    @if(mixin-exists(hook-lightbox-toolbar-icon-hover)) {@include hook-lightbox-toolbar-icon-hover();}
}



/* Button (Slidenav)
 ========================================================================== */

/*
 * 1. Center icon vertically and horizontally
 */

.uk-lightbox-button {
    box-sizing: border-box;
    width: $lightbox-button-size;
    height: $lightbox-button-size;
    background: $lightbox-button-background;
    color: $lightbox-button-color;
    /* 1 */
    display: inline-flex;
    justify-content: center;
    align-items: center;
    @if(mixin-exists(hook-lightbox-button)) {@include hook-lightbox-button();}
}

/*
 * Hover
 */

.uk-lightbox-button:hover {
    color: $lightbox-button-hover-color;
    @if(mixin-exists(hook-lightbox-button-hover)) {@include hook-lightbox-button-hover();}
}


/* Caption
 ========================================================================== */

.uk-lightbox-caption {}


/* Iframe
 ========================================================================== */

.uk-lightbox-iframe {
    width: 80%;
    height: 80%;
}


// Hooks
// ========================================================================

@if(mixin-exists(hook-lightbox-misc)) {@include hook-lightbox-misc();}

// @mixin hook-lightbox(){}
// @mixin hook-lightbox-item(){}
// @mixin hook-lightbox-toolbar(){}
// @mixin hook-lightbox-toolbar-icon(){}
// @mixin hook-lightbox-toolbar-icon-hover(){}
// @mixin hook-lightbox-button(){}
// @mixin hook-lightbox-button-hover(){}
// @mixin hook-lightbox-misc(){}
